#ifndef MENSAJE_H_
#define MENSAJE_H_

#include <string>
using namespace std;

/**
 * Clase padre de la jerarquia de mensajes. Cada subclase debe implementar los metodos toString()
 * y generarMensaje().
 */

class Mensaje
{
protected:	
	/*Devuelve un string con el nombre del tipo de mensaje.*/
	virtual string toString() = 0;
	
	/*Devuelve un string con el contenido del mensaje para ser usado por getText()*/
	virtual string generarText() = 0;
	
	/*Devuelve un string con el contenido del mensaje para ser usado por getXML()*/
	virtual string generarXML() = 0;
	
public:
	Mensaje();
	
	/*Devuelve un string con el mensaje formateado para ser mostrado por salida estandar.*/
	virtual string getText();
	
	/*Devuelve un string con el mensaje formateado cumpliendo el formato definido en el protocolo
	 * de comunicaciones*/
	string getXML();
	
	virtual ~Mensaje();
};

#endif /*MENSAJE_H_*/
